/*
 * bencode.h
 *
 * Dit bestand bevat de functie-definities waarmee een bencoded bestand uitgelezen
 * kan worden en waarmee bencoded structuren naar tekst omgezet kan worden.
 *
 * Compileer met NO_BENCODE_READING om de afhankelijkheid van stdio.h los te laten
 * ten koste van de functie parse_bencode_file.
 */

#ifndef BENCODE_H_
#define BENCODE_H_

#include "structs.h"

/*
 * Deze functie geeft de tekstrepresentatie van een entry_t en al zijn kinderen.
 * De teruggegeven char* is dynamisch gealloceerd en moet vrijgegeven worden met free().
 */
extern char *to_string(entry_ptr entry);

#ifndef NO_BENCODE_READING
#include <stdio.h>

/*
 * Deze functie leest een bestand in als B-encoded en geeft de inhoud gestructureerd terug.
 * file moet een pointer naar een geopende FILE zijn.
 * entry_ptr is NULL als er geen bencode is gevonden.
 */
extern entry_ptr parse_bencode_file(FILE *file);

#endif /* NO_BENCODE_READING */

#endif /* BENCODE_H_ */
